1 /* 2 3 Boost Software License - Version 1.0 - August 17th, 2003 4 5 Permission is hereby granted, free of charge, to any person or organization 6 obtaining a copy of the software and accompanying documentation covered by 7 this license (the "Software") to use, reproduce, display, distribute, 8 execute, and transmit the Software, and to prepare derivative works of the 9 Software, and to permit third-parties to whom the Software is furnished to 10 do so, all subject to the following: 11 12 The copyright notices in the Software and this entire statement, including 13 the above license grant, this restriction and the following disclaimer, 14 must be included in all copies of the Software, in whole or in part, and 15 all derivative works of the Software, unless such copies or derivative 16 works are solely in the form of machine-executable object code generated by 17 a source language processor. 18 19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT 22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE 23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, 24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 25 DEALINGS IN THE SOFTWARE. 26 27 */ 28 29 module derelict.glib.ghash; 30 31 import derelict.glib.gtypes; 32 import derelict.glib.glibconfig; 33 import derelict.glib.glist; 34 35 extern (C): 36 37 alias _GHashTable GHashTable; 38 alias int function (void*, void*, void*) GHRFunc; 39 alias _GHashTableIter GHashTableIter; 40 41 struct _GHashTableIter 42 { 43 gpointer dummy1; 44 gpointer dummy2; 45 gpointer dummy3; 46 int dummy4; 47 gboolean dummy5; 48 gpointer dummy6; 49 } 50 51 struct _GHashTable; 52 53 version(Derelict_Link_Static) 54 { 55 extern( C ) nothrow 56 { 57 GHashTable* g_hash_table_new(GHashFunc hash_func, GEqualFunc key_equal_func); 58 GHashTable* g_hash_table_new_full(GHashFunc hash_func, GEqualFunc key_equal_func, GDestroyNotify key_destroy_func, GDestroyNotify value_destroy_func); 59 void g_hash_table_destroy(GHashTable* hash_table); 60 void g_hash_table_insert(GHashTable* hash_table, gpointer key, gpointer value); 61 void g_hash_table_replace(GHashTable* hash_table, gpointer key, gpointer value); 62 void g_hash_table_add(GHashTable* hash_table, gpointer key); 63 gboolean g_hash_table_remove(GHashTable* hash_table, gconstpointer key); 64 void g_hash_table_remove_all(GHashTable* hash_table); 65 gboolean g_hash_table_steal(GHashTable* hash_table, gconstpointer key); 66 void g_hash_table_steal_all(GHashTable* hash_table); 67 gpointer g_hash_table_lookup(GHashTable* hash_table, gconstpointer key); 68 gboolean g_hash_table_contains(GHashTable* hash_table, gconstpointer key); 69 gboolean g_hash_table_lookup_extended(GHashTable* hash_table, gconstpointer lookup_key, gpointer* orig_key, gpointer* value); 70 void g_hash_table_foreach(GHashTable* hash_table, GHFunc func, gpointer user_data); 71 gpointer g_hash_table_find(GHashTable* hash_table, GHRFunc predicate, gpointer user_data); 72 guint g_hash_table_foreach_remove(GHashTable* hash_table, GHRFunc func, gpointer user_data); 73 guint g_hash_table_foreach_steal(GHashTable* hash_table, GHRFunc func, gpointer user_data); 74 guint g_hash_table_size(GHashTable* hash_table); 75 GList* g_hash_table_get_keys(GHashTable* hash_table); 76 GList* g_hash_table_get_values(GHashTable* hash_table); 77 void g_hash_table_iter_init(GHashTableIter* iter, GHashTable* hash_table); 78 gboolean g_hash_table_iter_next(GHashTableIter* iter, gpointer* key, gpointer* value); 79 GHashTable* g_hash_table_iter_get_hash_table(GHashTableIter* iter); 80 void g_hash_table_iter_remove(GHashTableIter* iter); 81 void g_hash_table_iter_replace(GHashTableIter* iter, gpointer value); 82 void g_hash_table_iter_steal(GHashTableIter* iter); 83 GHashTable* g_hash_table_ref(GHashTable* hash_table); 84 void g_hash_table_unref(GHashTable* hash_table); 85 gboolean g_str_equal(gconstpointer v1, gconstpointer v2); 86 guint g_str_hash(gconstpointer v); 87 gboolean g_int_equal(gconstpointer v1, gconstpointer v2); 88 guint g_int_hash(gconstpointer v); 89 gboolean g_int64_equal(gconstpointer v1, gconstpointer v2); 90 guint g_int64_hash(gconstpointer v); 91 gboolean g_double_equal(gconstpointer v1, gconstpointer v2); 92 guint g_double_hash(gconstpointer v); 93 guint g_direct_hash(gconstpointer v); 94 gboolean g_direct_equal(gconstpointer v1, gconstpointer v2); 95 } 96 } 97 else 98 { 99 extern( C ) nothrow 100 { 101 alias da_g_hash_table_new = GHashTable* function(GHashFunc hash_func, GEqualFunc key_equal_func); 102 alias da_g_hash_table_new_full = GHashTable* function(GHashFunc hash_func, GEqualFunc key_equal_func, GDestroyNotify key_destroy_func, GDestroyNotify value_destroy_func); 103 alias da_g_hash_table_destroy = void function(GHashTable* hash_table); 104 alias da_g_hash_table_insert = void function(GHashTable* hash_table, gpointer key, gpointer value); 105 alias da_g_hash_table_replace = void function(GHashTable* hash_table, gpointer key, gpointer value); 106 alias da_g_hash_table_add = void function(GHashTable* hash_table, gpointer key); 107 alias da_g_hash_table_remove = gboolean function(GHashTable* hash_table, gconstpointer key); 108 alias da_g_hash_table_remove_all = void function(GHashTable* hash_table); 109 alias da_g_hash_table_steal = gboolean function(GHashTable* hash_table, gconstpointer key); 110 alias da_g_hash_table_steal_all = void function(GHashTable* hash_table); 111 alias da_g_hash_table_lookup = gpointer function(GHashTable* hash_table, gconstpointer key); 112 alias da_g_hash_table_contains = gboolean function(GHashTable* hash_table, gconstpointer key); 113 alias da_g_hash_table_lookup_extended = gboolean function(GHashTable* hash_table, gconstpointer lookup_key, gpointer* orig_key, gpointer* value); 114 alias da_g_hash_table_foreach = void function(GHashTable* hash_table, GHFunc func, gpointer user_data); 115 alias da_g_hash_table_find = gpointer function(GHashTable* hash_table, GHRFunc predicate, gpointer user_data); 116 alias da_g_hash_table_foreach_remove = guint function(GHashTable* hash_table, GHRFunc func, gpointer user_data); 117 alias da_g_hash_table_foreach_steal = guint function(GHashTable* hash_table, GHRFunc func, gpointer user_data); 118 alias da_g_hash_table_size = guint function(GHashTable* hash_table); 119 alias da_g_hash_table_get_keys = GList* function(GHashTable* hash_table); 120 alias da_g_hash_table_get_values = GList* function(GHashTable* hash_table); 121 alias da_g_hash_table_iter_init = void function(GHashTableIter* iter, GHashTable* hash_table); 122 alias da_g_hash_table_iter_next = gboolean function(GHashTableIter* iter, gpointer* key, gpointer* value); 123 alias da_g_hash_table_iter_get_hash_table = GHashTable* function(GHashTableIter* iter); 124 alias da_g_hash_table_iter_remove = void function(GHashTableIter* iter); 125 alias da_g_hash_table_iter_replace = void function(GHashTableIter* iter, gpointer value); 126 alias da_g_hash_table_iter_steal = void function(GHashTableIter* iter); 127 alias da_g_hash_table_ref = GHashTable* function(GHashTable* hash_table); 128 alias da_g_hash_table_unref = void function(GHashTable* hash_table); 129 alias da_g_str_equal = gboolean function(gconstpointer v1, gconstpointer v2); 130 alias da_g_str_hash = guint function(gconstpointer v); 131 alias da_g_int_equal = gboolean function(gconstpointer v1, gconstpointer v2); 132 alias da_g_int_hash = guint function(gconstpointer v); 133 alias da_g_int64_equal = gboolean function(gconstpointer v1, gconstpointer v2); 134 alias da_g_int64_hash = guint function(gconstpointer v); 135 alias da_g_double_equal = gboolean function(gconstpointer v1, gconstpointer v2); 136 alias da_g_double_hash = guint function(gconstpointer v); 137 alias da_g_direct_hash = guint function(gconstpointer v); 138 alias da_g_direct_equal = gboolean function(gconstpointer v1, gconstpointer v2); 139 } 140 141 __gshared 142 { 143 da_g_hash_table_new g_hash_table_new; 144 da_g_hash_table_new_full g_hash_table_new_full; 145 da_g_hash_table_destroy g_hash_table_destroy; 146 da_g_hash_table_insert g_hash_table_insert; 147 da_g_hash_table_replace g_hash_table_replace; 148 da_g_hash_table_add g_hash_table_add; 149 da_g_hash_table_remove g_hash_table_remove; 150 da_g_hash_table_remove_all g_hash_table_remove_all; 151 da_g_hash_table_steal g_hash_table_steal; 152 da_g_hash_table_steal_all g_hash_table_steal_all; 153 da_g_hash_table_lookup g_hash_table_lookup; 154 da_g_hash_table_contains g_hash_table_contains; 155 da_g_hash_table_lookup_extended g_hash_table_lookup_extended; 156 da_g_hash_table_foreach g_hash_table_foreach; 157 da_g_hash_table_find g_hash_table_find; 158 da_g_hash_table_foreach_remove g_hash_table_foreach_remove; 159 da_g_hash_table_foreach_steal g_hash_table_foreach_steal; 160 da_g_hash_table_size g_hash_table_size; 161 da_g_hash_table_get_keys g_hash_table_get_keys; 162 da_g_hash_table_get_values g_hash_table_get_values; 163 da_g_hash_table_iter_init g_hash_table_iter_init; 164 da_g_hash_table_iter_next g_hash_table_iter_next; 165 da_g_hash_table_iter_get_hash_table g_hash_table_iter_get_hash_table; 166 da_g_hash_table_iter_remove g_hash_table_iter_remove; 167 da_g_hash_table_iter_replace g_hash_table_iter_replace; 168 da_g_hash_table_iter_steal g_hash_table_iter_steal; 169 da_g_hash_table_ref g_hash_table_ref; 170 da_g_hash_table_unref g_hash_table_unref; 171 da_g_str_equal g_str_equal; 172 da_g_str_hash g_str_hash; 173 da_g_int_equal g_int_equal; 174 da_g_int_hash g_int_hash; 175 da_g_int64_equal g_int64_equal; 176 da_g_int64_hash g_int64_hash; 177 da_g_double_equal g_double_equal; 178 da_g_double_hash g_double_hash; 179 da_g_direct_hash g_direct_hash; 180 da_g_direct_equal g_direct_equal; 181 } 182 }